package csw;

import java.util.Scanner;

public class J14Ex46CalendarV2 {

	public static void main(String[] args) {
			//서기 1년 1월 1일은 [월]요일이쟈냐
			//그러면 1년 12월 31일의 요일은?
			//1년은 일반적으로 365일이쟈냐 (평년)
		
			//31,[28],31,30,31,30
			//31,31,30,31,30,31
			//하지만 1년은 366일인 경우도 있자냐(윤년)
		
			//31,[29],31,30,31,30
			//31,31,30,31,30,31
		
			//윤년 : 4로 나누어지되,
			//100으로 나누어 떨어지지 않는 거나
			//400으로 나누어 떨어지는 년도
		
			//0:일 1:월.....6: 토
			// 위 내용을 토대로, 1년 12월 31일의 요일은?
			 int myday;
			 int cyear = 1;
			 int allday = 365;
			 int leapyear = 0;
		
			 if((cyear%4 ==0&& cyear %100 !=0)
			 			||cyear%400 == 0){
				 ++leapyear;
			 }
			 			
			 			
			 	//총일수 계산한 후 7로 나누어 나머지 계산
			 			myday = ((cyear*365)+leapyear) %7;
			 			
			 			//System.out.println("서기 1-12-31의 요일은 " + myday);
			 			
			 		
			 			//윤년 횟수 계산
			 			
			 	//만일, 2014-12-31의 요일은?
			 			cyear = 0;
			 			leapyear = 0;
			 			
			 			for(int i = 1;i<=cyear;++i){
			 				
			 			if(i%4 ==0 &&i % 100 !=0 || i % 400 ==0){
			 				++leapyear;
			 			}
		 			}
			 			//윤년 계산
			 			
			 			myday = ((cyear*allday) + leapyear) %7;
			 			//System.out.println("서기 2014-12-31의 요일은" + myday);
			 			
			 			
			 			
			 
			 			//달력 출력
			 			String result = "\n\t\t\t" + (cyear +1);
			 			result += " 년 1 월 \n";
			 			result +="\t-------------------------------------------------\n";
			 			result +="\t일\t월\t화\t수\t목\t금\t토\n";
			 			
			 			//줄바꿈 처리를 위한 변수
			 			int linecount = 0;
			 			//공백처리
			 			if(myday>0){
			 				for(int j=0;j<=myday;++j){
			 					result +="\t";
			 				++linecount;
			 				}
			 			}
			 			
			 			//날짜출력
			 			for(int k =1;k <=31;++k){
			 				result += "\t" + k;
			 				 ++linecount;
			 				if(linecount %7==0)
			 					result += "\n";
			 			}
			 			
			 			
			 			System.out.println(result);
			 	
	}//main

}//class
